Skip to content

πŸ“ PR Title: μž¬κ·€μ  λ…Έλ“œ 트리 λ Œλ”λ§ μ—”μ§„ κ΅¬ν˜„ 및 ν…ŒμŠ€νŠΈ#14

Merged
y-minion merged 11 commits intodevelopfrom
feat/canvas-rendering
Jan 12, 2026
Merged

πŸ“ PR Title: μž¬κ·€μ  λ…Έλ“œ 트리 λ Œλ”λ§ μ—”μ§„ κ΅¬ν˜„ 및 ν…ŒμŠ€νŠΈ#14
y-minion merged 11 commits intodevelopfrom
feat/canvas-rendering

Conversation

@y-minion
Copy link
Copy Markdown
Contributor

@y-minion y-minion commented Jan 12, 2026

πŸ” Summary

이번 변경사항은 μ—λ””ν„°μ˜ 핡심 뷰인 Canvas μ»΄ν¬λ„ŒνŠΈμ˜ λ Œλ”λ§ 엔진을 κ΅¬ν˜„ν•˜λŠ” μž‘μ—…μž…λ‹ˆλ‹€. λ‹¨μˆœν•œ 리슀트 λ Œλ”λ§μ΄ μ•„λ‹Œ, λΆ€λͺ¨-μžμ‹ 관계λ₯Ό ν‘œν˜„ν•  수 μžˆλŠ” μž¬κ·€μ  트리 λ Œλ”λ§ λ‘œμ§μ„ μ™„μ„±ν–ˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, Vitestλ₯Ό λ„μž…ν•˜μ—¬ λ‹€μ–‘ν•œ μ‹œλ‚˜λ¦¬μ˜€(Empty, Flat, Nested)에 λŒ€ν•œ μ•ˆμ •μ„±μ„ κ²€μ¦ν–ˆμŠ΅λ‹ˆλ‹€.

✨ Key Changes

1. μž¬κ·€μ  트리 λ Œλ”λ§

  • 🌲renderTree ν•¨μˆ˜: Canvas.tsx 내에 μž¬κ·€ ν•¨μˆ˜λ₯Ό κ΅¬ν˜„ν•˜μ—¬, DB의 Flatν•œ λ…Έλ“œ 데이터λ₯Ό Tree ꡬ쑰둜 λ³€ν™˜ν•˜μ—¬ λ Œλ”λ§ν•©λ‹ˆλ‹€.
  • πŸ›‘οΈ Root λ…Έλ“œ 처리: μ΅œμƒμœ„ Root λ…Έλ“œ(id: null)λŠ” 래퍼 없이 μžμ‹λ“€λ§Œ λ Œλ”λ§ν•˜λ„λ‘ μ˜ˆμ™Έ 처리λ₯Ό μΆ”κ°€ν•˜μ—¬ λŸ°νƒ€μž„ ν¬λŸ¬μ‹œλ₯Ό λ°©μ§€ν–ˆμŠ΅λ‹ˆλ‹€.

2. μ»΄ν¬λ„ŒνŠΈ μ•„ν‚€ν…μ²˜ κ°œμ„ 

  • 🧱 Container μ»΄ν¬λ„ŒνŠΈ: μžμ‹ μš”μ†Œλ₯Ό 포함할 수 μžˆλŠ” μ»¨ν…Œμ΄λ„ˆ κ°œλ…μ„ λ„μž…ν–ˆμŠ΅λ‹ˆλ‹€.
  • πŸ”„ NodeRenderer 고도화: node.type에 따라 μ μ ˆν•œ μ»΄ν¬λ„ŒνŠΈλ₯Ό λ§€ν•‘ν•˜κ³ , λͺ¨λ“  μ»΄ν¬λ„ŒνŠΈκ°€ children을 λ°›μ•„ λ Œλ”λ§ν•  수 μžˆλ„λ‘ ꡬ쑰λ₯Ό ν†΅μΌν–ˆμŠ΅λ‹ˆλ‹€.

3. ν…ŒμŠ€νŠΈ ν™˜κ²½ ꡬ좕 및 검증

  • πŸ§ͺ Vitest λ„μž…: apps/editor에 ν…ŒμŠ€νŒ… ν™˜κ²½μ„ ꡬ좕(happy-dom, alias μ„€μ • λ“±)ν–ˆμŠ΅λ‹ˆλ‹€.

  • βœ… μ‹œλ‚˜λ¦¬μ˜€ 검증:

    • Case 1: λ…Έλ“œκ°€ 없을 λ•Œ
    • Case 2: ν˜•μ œ λ…Έλ“œλ§Œ μžˆμ„ λ•Œ
    • Case 3: λΆ€λͺ¨-μžμ‹ 쀑첩 ꡬ쑰일 λ•Œ
    • Case 4: 3단계 이상 κΉŠμ€ 쀑첩
  • βœ… Checklist

    • μž¬κ·€ λ Œλ”λ§μ΄ λ¬΄ν•œ 루프 없이 정상 λ™μž‘ν•˜λŠ”κ°€?

    • Root λ…Έλ“œκ°€ λΆˆν•„μš”ν•˜κ²Œ λ Œλ”λ§λ˜μ§€ μ•ŠλŠ”κ°€?

    • λͺ¨λ“  ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€κ°€ Pass ν•˜λŠ”κ°€?

flatν•œ ꡬ쑰λ₯Ό κ°–κ³  μžˆλŠ” DBλ₯Ό 트리 ꡬ쑰둜 λ³€ν™˜ν•΄μ£ΌλŠ” renderTreeκ΅¬ν˜„ μ™„λ£Œ.
λ…Έλ“œμ˜ parent_IDλ₯Ό 톡해 μƒν•˜ 관계λ₯Ό μ°Ύμ•„ μž¬κ·€μ μœΌλ‘œ 트리 ꡬ쑰λ₯Ό κ΅¬μ„±ν•©λ‹ˆλ‹€.
Canvas의 nodesκ°€ λΉ„μ–΄μžˆλŠ” 경우 ROOTλ₯Ό 더미 λ…Έλ“œκ°€ μ•„λ‹Œ μ‹€μ œ λ…Έλ“œλ‘œ 인식해 λ…Έλ“œ λ Œλ”λŸ¬λ‘œ λ Œλ”λ§ ν•˜λ €κ³  ν•΄ μ—λŸ¬ λ°œμƒ. ROOTλŠ” μ˜ˆμ™Έμ²˜λ¦¬ ν•˜μ—¬ λ…Έλ“œ λ Œλ”λŸ¬λ‘œ λ Œλ”λ§ ν•˜μ§€ μ•Šλ„λ‘ 처리 μ™„λ£Œ
nodes에 λ”°λ₯Έ μ•Œλ§žμ€ λ…Έλ“œ 트리λ₯Ό λ Œλ”λ§ μ—¬λΆ€λ₯Ό ν…ŒμŠ€νŠΈ μ™„λ£Œ
μžμ‹ λ…Έλ“œλ“€μ„ λ Œλ”λ§ ν• λ•Œ ꡬ뢄할 수 μžˆλ„λ‘ Key 속성 μΆ”κ°€ μ™„λ£Œ
@y-minion y-minion self-assigned this Jan 12, 2026
λͺ¨λ…Έλ ˆν¬ κ΅¬μ‘°μ—μ„œ λ°œμƒν•˜λŠ” 별칭 μ°Έμ‘° μ—λŸ¬ ν•΄κ²° μ™„λ£Œ
μ˜ˆμ „ λ‘œμ§μ„ μ‚­μ œν›„ λ³€κ²½λœ μ•‘μ…˜μœΌλ‘œ μˆ˜μ •
@y-minion y-minion merged commit 5289398 into develop Jan 12, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant